#ifndef NAVIGATIONBAR_H
#define NAVIGATIONBAR_H

#include <QDialog>
#include <QScrollArea>

class ItemDef;

namespace Ui {
class NavigationBar;
}

class NavigationBar : public QDialog
{
    Q_OBJECT

public:
    struct TreeNode
    {
        QString qsLableName;//名称
        QString iconPath;//显示图标路径
        int nLevel;//第几阶级节点
        bool collapse;//记录判断节点是否展开
        int nIndex;//记录节点位置
        ItemDef *itemDef;//记录窗口指针位置
        QList<TreeNode* > listChildren;//子节点
    };

    struct ListNode
    {
        QString qsLabelName;
        ItemDef *itemDef;//记录窗口指针位置
        TreeNode* pTreeNode;
    };

    explicit NavigationBar(QWidget *parent = nullptr);
    ~NavigationBar();

    void refresh();//刷新->释放指针重新创建->适用于新增或减少节点时使用
    void refresh2();//刷新->隐藏窗口指针->减少运行资源
    void setPbStyle(int data);//刷新样式
    void setPbStyleone(int data);//刷新指定一个样式样式
    void setGeometry2(int x,int y,int h,int w);

private slots:
    void receItemDef(int nLevel,int nIndex);

signals:
    void sendNavigationBar(QString);

private:


private:
    Ui::NavigationBar *ui;

    QVector<TreeNode*>  m_vecTreeNode;      //用于存储对应关系
    QVector<ListNode>   m_vecListNode;      //存储所有显示的节点
    QScrollArea *scrollArea;
    int length = 0;//记录控件显示长度
};

#endif // NAVIGATIONBAR_H
